Social graph that includes web pages outside of a social networking system

ABSTRACT

A social networking system includes a mechanism for incorporating nodes in the social graph, where the nodes are associated with a web page. Each web page includes one or more tags, which contain meta-information for defining the node in the social networking system, such as the type of the node. The social networking system retrieves the tags from the markup language document and stores their information in connection with the node for the web page. The web page may be outside of the social networking system&#39;s domain and may be operated by an entity other than the social networking operator; thus, third parties can define, create, and maintain nodes that are then used by the social networking system. Users may then interact with the nodes on websites outside of the social networking system, and these interactions are tracked by and reflected back within the social networking system.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of co-pending U.S. application Ser.No. 12/764,929, filed Apr. 21, 2010, which is incorporated by referencein its entirety.

BACKGROUND

This invention relates generally to social networking, and in particularto a social networking environment in which a social graph may includeweb pages outside of a social networking system.

Social networking systems have become prevalent in recent years becausethey provide a useful environment in which users can connect to andcommunicate with other users. Although a variety of different types ofsocial networking systems exist, these systems commonly providemechanisms allowing users to define and interact within their socialnetworks. In this context, a user may be an individual or any otherentity, such as a business or other non-person entity. Accordingly,while enabling social communications among friends, a social networkingsystem can also be a valuable tool for businesses to engage withpotential consumers. Even without a commercial purpose, a socialnetworking system may allow other types of entities to spread theirmessage. For example, a non-person entity may set up a page or groupthat other users can join (or become a “fan” of), which enables thenon-person entity to provide a forum to receive and transmitcommunications to a group of interested users.

The useful social information that is tracked and maintained by a socialnetworking system can be thought of in terms of a “social graph,” whichincludes a plurality of nodes that are interconnected by a plurality ofedges. Each node in the social graph may represent something that canact on and/or be acted upon by another node. Common examples of nodesinclude users, non-person entities, content items, groups, events,messages, concepts, and any other things that can be represented by anobject in a social networking system. An edge between two nodes in thesocial graph represents a particular kind of connection between the twonodes, which may result from an action that was performed by one of thenodes on the other node.

For example, if one user establishes a connection with another user inthe social networking system, the two users are represented as a node,and the edge between them represents the established connection.Continuing this example, one of these users may send a message to theother user within the social networking system. This act of sending themessage is another edge between those two nodes, which can be tracked bythe social networking system. The message itself may be treated as anode. In another example, one user may tag another user in an image thatis maintained by the social networking system. This tagging action maycreate edges between the users as well as an edge between each of theusers and the image, which is also a node. In yet another example, if auser confirms attending an event, the user and the event are nodes,where the attendance of the event is the edge. Using a social graph,therefore, a social networking system may keep track of many differenttypes of objects and the interactions and connections among thoseobjects, thereby maintaining an extremely rich store of sociallyrelevant information.

One limitation of a social networking system's ability to track sociallyrelevant information is the ability to represent different objects andto track any interactions among them. This problem can be appreciated inthe context of the discussion of the social graph. If something is notrepresented by a node in the first place, then other nodes cannotinteract with it such that the social networking system can track anedge between those nodes. For example, if it were desirable to trackwhether a user purchased a product outside of the social networkingsystem, the information necessary to track that product as a node wouldhave to be provided to the social networking system. However, there isno efficient mechanism to provide this information so that it can beused effectively by the social networking system. Accordingly, what areneeded are mechanisms to facilitate expansion of the social graph toallow a social networking system to track socially relevant informationfor a wide variety of things.

SUMMARY

To enable a social networking system to track socially relevantinformation about objects and their interactions, embodiments of theinvention provide a flexible mechanism for incorporating nodes in thesocial graph. In particular, embodiments of the invention enable a nodeto be defined by an association with a web page (or anything representedby a URL, URI, or any other address on the Internet or other network),which may be outside of the domain of the social networking system.Since anything can be represented by a web page, and web pages may beeasily created to represent any person, place, or other thing, thiseffectively expands the social graph across any arbitrary place on theInternet.

In one embodiment, a web page is associated with a node in a socialnetworking system. The web page is encoded by a markup languagedocument, which a web browser application can use to render and displaythe web page on a user device. The markup language document includes oneor more tags, which contain meta-information about the node. The tagsmay provide textual titles, labels, an identifier unique to the node, amicro format, and/or descriptions about the node, as well as otherinformation, such as the type of the node. The social networking systemretrieves the tags from the markup language document and stores theirinformation in connection with the node for the web page. In this way, anode in the social networking system may be created and defined based onthe information contained within a web page. The web page may be outsideof the social networking system's domain and may be operated by anentity other than the social networking operator; thus, third partiescan define, create, and maintain nodes that are then used by the socialnetworking system. This effectively opens the social graph tothird-party developers and encourages further development and definitionof a complex and rich social graph.

In use, in one embodiment, a user device requests a web page from awebsite server, which may be outside of and separate from the socialnetworking system. The server sends to the user device a markup languagedocument that includes an instruction for a browser application runningon the user device to incorporate within the web page informationobtained from the social networking system. In one embodiment, theinstruction creates a frame within the web page that contains contentpulled directly from the social networking system (e.g., an iframe). Thecontent of the frame, provided by the social networking system, containsan action button that enables a user to interact with the node. Thisaction may depend on the type of node, such as becoming a fan or likingof a fan page node, joining a group or interest associated with thenode, submitting a review associated with the node, connecting with thenode, sharing the node with another user, confirming attendance to anevent node, checking in to a location node, commenting on a media itemnode, just to name a few examples. The frame may also contain socialinformation that is relevant to the user and the node, such as anindication of one or more of the user's connections in the socialnetworking system who have also performed the action.

Since the frame is a direct interface with the social networking system,the user may select the action button to perform the action just as whenthe user is normally on the social networking system. The externalwebsite need not know that the action was taken, or even the identity ofthe user. Once the action is taken by the user, the social networkingsystem can react just as if the user were interacting with node withinthe social networking system. For example, the social networking systemcan update the user's profile to add an association with the node, postthe action to the user's connections, and/or any combination ofresponses that are appropriate when a user interacts with a node in thesocial networking system.

Accordingly, embodiments of the invention allow the social graph used bythe social networking system to include anything that can be representedby a web page. This also enables users to interact easily with nodes inthe social graph outside of the domain of the social networking system.Finally, this allows for a user's interactions with a node thatrepresents a web page to be propagated back to the social networkingsystem, which may then use the resulting socially relevant informationfor various purposes (e.g., posting activity feeds, targetingadvertising, etc.).

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a network diagram of a system for providing personalizedcontent to a user of a social networking system, in accordance with anembodiment of the invention.

FIG. 2 is a diagram of a social networking system, in accordance with anembodiment of the invention.

FIG. 3 is a web page of an external website that includes a frame forinteracting with a node outside of the social networking system, inaccordance with an embodiment of the invention.

FIG. 4 is a web page of an external website including multiple framesfor interacting with multiple nodes outside of the social networkingsystem, in accordance with an embodiment of the invention.

FIG. 5 is an interaction diagram of a process for interacting with anode outside of a social networking system, in accordance with anembodiment of the invention.

The figures depict various embodiments of the present invention forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the invention described herein.

DETAILED DESCRIPTION Overview of a Social Networking System Architecture

FIG. 1 is a network diagram of one embodiment of a system 100 forproviding personalized content to a user of a social networking system130. The system 100 includes one or more user devices 110, one or moreexternal websites 120, the social networking system 130 and a website140. For purposes of illustration, the embodiment of the system 100shown by FIG. 1 includes a single external website 120 and a single userdevice 110. However, in other embodiments, the system 100 may includemore user devices 110 and/or more external websites 120. In certainembodiments, the social networking system 130 is operated by the socialnetwork provider, whereas the external websites 120 are separate fromthe social networking system 130 in that they may be operated bydifferent entities. In various embodiments, however, the socialnetworking system 130 and the external websites 120 operate inconjunction to provide social networking services to users of the socialnetworking system 130. In this sense, the social networking system 130provides a platform, or backbone, which other systems, such as externalwebsites 120, may use to provide social networking services andfunctionalities to users across the Internet.

A user device 110 comprises one or more computing devices that canreceive input from a user and can transmit and receive data via thenetwork 140. For example, the user device 110 may be a desktop computer,a laptop computer, a smart phone, a personal digital assistant (PDAs) orany other device including computing functionality and datacommunication capabilities. The user device 110 is configured tocommunicate with the external website 120 and the social networkingsystem 130 via the network 140, which may comprise any combination oflocal area and/or wide area networks, using both wired and wirelesscommunication systems.

In one embodiment, the user device 110 displays content from theexternal website 120 or from the social networking system 130 byprocessing a markup language document 116 received from the externalwebsite 120 or from the social networking system 130 using a browserapplication 120. The markup language document 116 identifies content andone or more instructions describing formatting or presentation of thecontent. By executing the instructions included in the markup languagedocument 116, the browser application 112 displays the identifiedcontent using the format or presentation described by the markuplanguage document 116. For example, the markup language document 116includes instructions for generating and displaying a web page havingmultiple frames that include text and/or image data retrieved from theexternal website 120 and/or the social networking system 130. In variousembodiments, the markup language document 116 comprises a data fileincluding extensible markup language (XML) data, extensible hypertextmarkup language (XHTML) data or other markup language data.

In one embodiment, the user device 110 also includes a cookie 114including data indicating whether a user of the user device 110 islogged into the social networking system 130. The cookie 114 indicateswhether the user of the computing device 110 is involved in an activesession where the user device 110 exchanges data with the socialnetworking system 130, allowing modification of the data communicatedfrom the social networking system 130 to the user device 110. Use of thecookie 114 in exchanging data between the user device 110, the socialnetworking system 130 and/or the external website 120 is furtherdescribed below in conjunction with FIG. 5.

The external website 120 comprises one or more web servers including oneor more web pages 122, which are communicated to the user device 110using the network 140. The external website 120 is separate from thesocial networking system 130. For example, the external website 120 isassociated with a first domain while the social networking website isassociated with a separate social networking domain. A web page 122included in the external website 120 comprises a markup languagedocument identifying content and including instructions specifyingformatting or presentation of the identified content, as describedabove.

The markup language document 116 includes one or more tags includingmeta-information associating the web page 122 represented by the markuplanguage document 116 with a node in the social networking system 130,which are further described below. The tags may provide textual titles,labels, and/or descriptions about the node in the social networkingsystem 130, as well as other information, such as a title, label, uniqueidentifier, micro format, and/or descriptions about the node, as well asother information, such as the type of the node. The tags allow creationof a node in the social networking system 116 based on the informationwithin the markup language document 116 comprising a web page 122. Asthe web page 122 may be maintained by an external website 120 that isoutside of the domain of the social networking system 130 and may beoperated by an entity other than an operator of the social networkingsystem 130, the tags in the markup language document 116 allow externalwebsites 120 to define, create, and maintain nodes used by the socialnetworking system 130, as further described below.

In one embodiment, a web page 122 includes a widget 124 comprisinginstructions that, when executed by a browser application 112 of a userdevice 110, retrieve data from the social networking system 130 anddisplay the information retrieved from the social networking system 130.For example, the widget 124 comprises an instruction associated with thesocial networking system 130 that generates a frame within the web page122 that includes information from the social networking system 130.Hence, the widget 124 allows a web page 122 from the external website120 to provide personalized content from the social networking website130 when the web page 122 is rendered and displayed by a browserapplication 112 of a user device 110. The widget 124 also allows a userto interact with content from the social networking website 130 byinteracting with content in the frame generated within the web page 122.

The social networking system 130 comprises one or more computing devicesstoring a social network, or a social graph, comprising a plurality ofusers and providing users of the social network with the ability tocommunicate and interact with other users of the social network. Thesocial networking system 130 is further described below in conjunctionwith FIG. 2. In use, users join the social networking system 130 andthen add connections to a number of other users of the social networkingsystem 130 to whom they desire to be connected. As used herein, the term“friend” refers to any other user of the social networking system 130 towhom a user has formed a connection, association, or relationship viathe social networking system 130.

Connections may be added explicitly by a user or may be automaticallycreated by the social networking systems 130 based on commoncharacteristics of the users (e.g., users who are alumni of the sameeducational institution). For example, a first user specifically selectsa particular other user to be a friend. Connections in the socialnetworking system 130 are usually in both directions, but need not be,so the terms “user” and “friend” depend on the frame of reference.Connections between users of the social networking system 130 areusually bilateral, or “mutual,” but connections may also be unilateral,or “one-way.” For example, if Bob and Joe are both users of the socialnetworking system 130 and connected to each other, Bob and Joe are eachother's connections. If, on the other hand, Bob wishes to connect to Joeto view data communicated to the social networking system by Joe but Joedoes not wish to form a mutual connection, a unilateral connection maybe established. The connection between users may be a direct connection;however, some embodiments of a social networking system allow theconnection to be indirect via one or more levels of connections ordegrees or separation.

In addition to establishing and maintaining connections between usersand allowing interactions between users, the social networking system130 provides users with the ability to take actions on various types ofitems supported by the social networking system 130. These items mayinclude groups or networks (where “networks” here refer not to physicalcommunication networks, but rather social networks of people, entities,and concepts) to which users of the social networking system may belong,events or calendar entries in which a user might be interested,computer-based applications that a user may use via the socialnetworking system 130, transactions that allow users to buy or sellitems via the service, and interactions with advertisements that a usermay perform on or off the social networking system. These are just a fewexamples of the items upon which a user may act on a social networkingsystem, and many others are possible. A user may interact with anythingthat is capable of being represented in the social networking system 130or in an external website 120, separate from the social networkingsystem 130, coupled to the social networking system 130 via a network140.

The social networking system 130 is also capable of linking a variety ofentities. For example, the social networking system 130 enables users tointeract with each other as well as external websites 120 or otherentities through an API or other communication channels. Thus, thesocial networking system 130 generates and maintains a “social graph”comprising a plurality of nodes interconnected by a plurality of edges.Each node in the social graph may represent an entity that can act onanother node and/or that can be acted on by another node. The socialgraph may include various types of nodes. Examples of types of nodesinclude users, non-person entities, content items, web pages, groups,events, messages, concepts, and any other things that can be representedby an object in the social networking system 130. An edge between twonodes in the social graph represents a particular kind of connectionbetween the two nodes, which may result from an action that wasperformed by one of the nodes on the other node. For example, when afirst user identifies a second user as a friend, an edge in the socialgraph is generated connecting a node representing the first user and asecond node representing the second user. As various nodes interact witheach other, the social networking system 130 modifies edges connectingthe various nodes to reflect the interactions.

The social networking system 130 also includes user-generated content,which enhances a user's interactions with the social networking system130. User-generated content may include anything a user can add, upload,send, or “post,” to the social networking system 130. For example, auser communicates posts to the social networking system 130 from a userdevice 100. Posts may include data such as status updates or othertextual data, location information, photos, videos, links, music orother similar data and/or media. Content may also be added to the socialnetworking system 130 by a third-party through a “communicationchannel,” such as a newsfeed or stream. Content “items” represent singlepieces of content that are represented as objects in the socialnetworking system 130. In this way, users of the social networkingsystem 130 are encouraged to communicate with each other by posting textand content items of various types of media through variouscommunication channels, increasing the interaction of users with eachother and increasing the frequency with which users interact with thesocial networking system 130.

FIG. 2 is a diagram of one embodiment of a social networking system 130.The embodiment of a social networking website 130 shown by FIG. 2includes a web server 210, an action logger 215, an API request server220, an action log 230, a user profile store 240, and a connection store245. In other embodiments, the social networking website 130 may includeadditional, fewer, or different modules for various applications.Conventional components such as network interfaces, security mechanisms,load balancers, failover servers, management and network operationsconsoles, and the like are not shown so as to not obscure the details ofthe system.

As described above in conjunction with FIG. 1, the social networkingsystem 130 comprises a computing system that allows users to communicateor otherwise interact with each other and access content as describedherein. The social networking system 130 stores user profiles describingthe users of a social network. The user profiles include biographic,demographic, and other types of descriptive information, such as workexperience, educational history, hobbies or preferences, location, andthe like. The social networking system 130 further stores datadescribing one or more connections between different users in theconnection store 245. The connection information may indicate users whohave similar or common work experience, group memberships, hobbies, oreducational history. Additionally, the social networking system 130includes user-defined connections between different users, allowingusers to specify their relationships with other users. For example,user-defined connections allow users to generate relationships withother users that parallel the users' real-life relationships, such asfriends, co-workers, partners, and so forth. Users may select frompredefined types of connections, or define their own connection types asneeded.

The web server 210 links the social networking system to one or moreuser device 110 and/or one or more external websites 130 via the network240. The web server 210 serves web pages, as well as other web-relatedcontent, such as Java, Flash, XML, and so forth. The web server 210 mayinclude a mail server or other messaging functionality for receiving androuting messages between the social networking system 130 and one ormore user devices 110. The messages can be instant messages, queuedmessages (e.g., email), text and SMS messages, or any other suitablemessaging format.

The Application Programming Interface (API) request server 220 allowsone or more external websites 120 to access information from the socialnetworking system 130 by calling one or more APIs. The API requestserver 220 may also allow external websites 120 to send information tosocial networking website by calling APIs. For example, an externalwebsite 120 sends an API request to the social networking system 130 viathe network 140 and the API request server 220 receives the API request.The API request server 220 processes the request by calling an APIassociated with the API request to generate an appropriate response,which the API request server 220 communicates to the external website120 via the network 140. For example, responsive to an API request, theAPI request server 220 collects data associated with a user andcommunicates the collected data to the external website 120.

The action logger 215 is capable of receiving communications from theweb server 210 about user actions on and/or off the social networkingsystem 130. The action logger 215 populates the action log 230 withinformation about user actions, allowing the social networking system130 to track various actions taken by its users within the socialnetworking system 130 and outside of the social networking system 130.Any action that a particular user takes with respect to another user isassociated with each user's profile, through information maintained inthe action log 230 or in a similar database or other data repository.Examples of actions taken by a user within the social network 130 thatare identified and stored may include, for example, adding a connectionto another user, sending a message to another user, reading a messagefrom another user, viewing content associated with another user,attending an event posted by another user or other actions interactingwith another user. When a user takes an action within the socialnetworking system 130, the action is recorded in an action log 240. Inone embodiment, the social networking system maintains the action log230 as a database of entries. When an action is taken within the socialnetworking system 130, an entry for the action is added to the actionlog 230.

Additionally, user actions may be associated with an entity outside ofthe social networking system 130, such as an external website 120 thatis separate from the social networking system 130. For example, theaction logger 215 receives data describing a user's interaction with anexternal website 120 from the web server 210. Examples of actions wherea user interacts with an external website 120 include a user expressingan interest in an external website 120 or another entity, a user postinga comment to the social networking system 130 that discusses an externalwebsite 120 or a web page 122 within the external website 120, a userposting to the social networking system 130 a Uniform Resource Locator(URL) or other identifier associated with an external website 120, auser attending an event associated with an external website 120 or anyother action by a user that is related to an external website 120. Thus,the action log 240 may include actions describing interactions between asocial networking system 130 user and an external website 120 that isseparate from the social networking system 130.

The authorization server 235 enforces one or more privacy settings ofthe users of the social networking system 130. A privacy setting of auser determines how particular information associated with a user can beshared. The privacy setting comprises the specification of particularinformation associated with a user and the specification of the entityor entities with whom the information can be shared. Examples ofentities with which information can be shared may include other users,applications, external websites 120 or any entity that can potentiallyaccess the information. The information that can be shared by a usercomprises user profile information like profile photo, phone numbersassociated with the user, user's connections, actions taken by the usersuch as adding a connection, changing user profile information and thelike.

The privacy setting specification may be provided at different levels ofgranularity. For example, the privacy setting may identify specificinformation to be shared with other users. For example, the privacysetting identifies a work phone number or a specific set of relatedinformation, such as, personal information including profile photo, homephone number, and status. Alternatively, the privacy setting may applyto all the information associated with the user. The specification ofthe set of entities that can access particular information can also bespecified at various levels of granularity. Various sets of entitieswith which information can be shared may include, for example, allfriends of the user, all friends of friends, all applications, allexternal websites 120 or all external systems. One embodiment allows thespecification of the set of entries comprise an enumeration of entities,for example, the user may provide a list of external websites 120 thatare allowed to access certain information. Another embodiment allows thespecification to comprise a set of entities along with exceptions thatare not allowed to access the information. For example, a user may allowall external websites 120 to access the user's work information butspecify a list of external websites 120 that are not allowed to accessthe work information. Certain embodiments call the list of exceptionsthat are not allowed to access certain information a block list.External systems, such as external websites 120, belonging to a blocklist specified by a user are blocked from accessing the informationspecified in the privacy setting. Note that the various combinations ofgranularity of specification of information and the granularity ofspecification of entities with which information is shared are possible,i.e., all personal information may be shared with friends whereas allwork information may be shared with friends of friends.

For example, a user's privacy setting indicates that a first friend isallowed to access the user's work phone number and the user's mobilephone number while preventing the first friend from accessing otherinformation about the user, such as the user's profile photo or theuser's list of friends. However, the user's privacy setting indicatesthat a second friend is allowed to access the user's friend list. Theinformation associated with a user includes actions taken by a user suchas the action of adding a new friend 330. The user 130 can completelyblock another user or an application from accessing any informationassociated with the user 130. A user or an application that is blockedby the user 130 does not have access to any information associated withuser 130.

The authorization server 235 contains logic to determine if certaininformation associated with a user can be accessed by a user's friends,external websites 120 and/or other applications and entities. Forexample, an external website 120 that attempts to access a user'scomment about a URL associated with the external website 120 must getauthorization from the authorization server 235 to access the user'swork phone number. Based on the user's privacy settings, theauthorization server 235 determines if another user, an external website120, an application or another entity is allowed to access informationassociated with the user, including information about actions taken bythe user. For example, the authorization server 235 uses a users privacysetting to determine if the user's comment about a URL associated withthe external website 120 can be accessed by the external website 120.This enables a user's privacy setting to specify which other users, orother entities, are allowed to receive data about the user's actions orother data associated with the user.

Additionally, the social networking system 130 maintains data aboutobjects with which a user may interact with using the social networkingsystem 130. To maintain this data, the user profile store 240 and theconnection store 245 store instances of the corresponding type ofobjects maintained by the social networking system 130. Each object typehas information fields that are suitable for storing informationappropriate to the type of object. For example, the user profile store240 contains data structures with fields suitable for describing auser's profile. When a new object of a particular type is created, thesocial networking system 130 initializes a new data structure of thecorresponding type, assigns a unique object identifier to it, and beginsto add data to the object as needed. This might occur, for example, whena user becomes a user of the social networking system 130, the socialnetworking system 130 generates a new instance of a user profile in theuser profile store 240, assigns a unique identifier to the user profile,and begins to populate the fields of the user profile with informationprovided by the user.

The connection store 245 includes data structures suitable fordescribing a user's connections to other users, connections to externalwebsites 120 or connections to other entities. The connection stores 245may also associate a connection type with a user's connections, whichmay be used in conjunction with the user's privacy setting, furtherdescribed above, to regulate access to information about the user.

Data stored in the connection store 245, the user profile store 240 andthe action log 230 allows the social networking system 120 to generate asocial graph that uses nodes to identify various objects and edgesconnecting nodes to identify relationships between different objects. Anedge between two nodes in the social graph represents a particular kindof connection between the two nodes, which may result from an actionthat was performed by one of the nodes on the other node.

For example, if a first user establishes a connection with a second userin the social networking system, user profiles of the first user and thesecond users from the user profile store 240 may act as nodes in thesocial graph. The connection between the first user and the second userstored by the connection store 245 is an edge between the nodesassociated with the first user and the second user. Continuing thisexample, the second user man then send the first user a message withinthe social networking system 130, which is identified by the actionlogger 215 and stored in the action log 230. The stored action ofsending the message is another edge between the two nodes in the socialgraph representing the first user and the second user. Additionally, themessage itself may be identified from the action log 230 and included inthe social graph as another node connected to the nodes representing thefirst user and the second user.

In another example, a first user may tag a second user in an image thatis maintained by the social networking system 130 (or, alternatively, inan image maintained by another system outside of the social networkingsystem 130). The image may itself be represented a node in the socialnetworking system 130. This tagging action may create edges between thefirst user and the second user as well as create an edge between each ofthe users and the image, which is also a node in the social graph. Inyet another example, if a user confirms attending an event, the user andthe event are nodes obtained from the user profile store 240, where theattendance of the event is an edge between the nodes that may beretrieved from the action log 230. By generating and maintaining thesocial graph, the social networking system 130 includes data describingmany different types of objects and the interactions and connectionsamong those objects, providing a rich source of socially relevantinformation.

Structure and Content of a Web Page from an External Website

FIG. 3 is one embodiment of a web page 122 of an external website 120.The web page 122 includes a frame 320 for interacting with a node in asocial graph associated with the web page 122, which is outside of asocial networking system 130 maintaining the social graph. The web page122 includes content 310 such as text data, video data, image data orany other data for presentation using a browser application 122operating on a user device 110. The web page 122 also includes one ormore instructions describing formatting or presentation of the content310. When a browser application 122 operating on a user device 110,executes the instructions included in the web page 122, the browserapplication 112 displays the identified content 310 using the format orpresentation described by the web page 122.

In one embodiment, the web page 122 comprises a markup language document116 that includes the content 310 and the instructions for formatting orpresenting the content 310. In various embodiments, the markup languagedocument 116 comprises a data file including extensible markup language(XML) data, extensible hypertext markup language (XHTML) data or othermarkup language data. In addition to the content 310 and instructionsfor formatting or presenting the content 310, the markup languagedocument 116 comprising the web page 122 also includes one or more tagsthat include meta-information about a node in the social graphmaintained by the social networking system associated with the web page122. The tags may provide textual titles, labels, and/or descriptionsabout the node, as well as other information, such as a title, label,unique identifier, micro format, and/or descriptions about the node, aswell as other information, such as the type of the node. The socialnetworking system 130 retrieves the tags from the markup languagedocument 116 and stores their information in connection with the nodefor the web page 122. The tags allow the social networking system 130 tocreate and define a node in a social graph based on the informationcontained within the web page 116. Because the web page 122 may beoutside of a domain of the social networking system 130 and may beoperated by an entity other than the social networking system 130operator, the tags enable third parties to define, create, and maintainnodes that are then used by the social networking system 130.

Examples of information about the node provided by one or more tagsincluded in the markup language document 116 encoding the web page 122may include, without limitation, a title, label, unique identifier,micro format, and/or descriptions about the node, as well as otherinformation, such as the type of the node, one or more social networkingsystem user identifiers specifying one or more administrators of thenode, and/or location information associated with the node. A title tagidentifies a text string to be shown when the social networking system130 or a widget 124 accesses the node. Similarly, a keyword tag includestext information identifying one or more keywords identifying the webpage 122 and/or a description tag comprises text information describingthe web page 122 that is displayed by the social networking system 122or by a widget 124 when the node is presented. An image tag may identifyan image displayed by the social networking system 122 or by a widget124 when the node is presented. Additionally, a canonical tag identifiesa canonical uniform resource locator (URL), or other web identifier,which identifies the web page 122.

An administrator tag includes one or more social networking system 130user identifiers specifying users of the social networking system 130with the ability to create and/or maintain nodes associated with the webpage 122. The administrator tag potentially allows users outside of thesocial networking system 130 to create and maintain nodes used by thesocial networking system 130, effectively opening the social graph tothird-party developers and encourages further development and definitionof a complex and rich social graph. In one embodiment, the socialnetworking system 130 provides a user interface to the user identifiersspecified by the administrator tag, which facilitates modification ofthe node associated with the web page 122.

One or more microformat tags attach semantics to other markup tagsincluded in the markup language document 116, which allows informationidentified by the markup tags to be automatically processed by thesocial networking system 130. The microformat tags allow data describingthe node in the social networking system 130, or describing the objectrepresented by the node in the social networking system 130, to bestandardized. Additionally, one or more microformat tags may increasethe information the social networking system 130 obtains from the webpage 122 to more particularly identify a node type or to associate atype with a node. For example, the additional information obtained fromthe web page 122 using a microformat tag may allow the social networkingsystem 130 to use data from the web page 122 to learn more about theinterests of social networking system 130 users connected to the nodeassociated with the web page 122. Similarly, a location tag providesinformation about a location associated with the web page 122 to thesocial networking system 130. For example, a location tag identifies oneor more addresses associated with the web page 122.

A node type tag identifies a type of node created by the socialnetworking website 130 and associated with the web page 122. As thesocial networking system 130 enables different actions to be performedon different types of nodes, the node type tag allows customization ofhow social networking system 130 users interact with the node associatedwith the web page 130. In one embodiment, the node type tag includes oneor more values selected from a list maintained by the social networkingsystem 130. For example, the node type tag may include a valueidentifying a user, a non-person entities, a content item, a group, anevent, a message, a concept, a sports team, a blog, an activity, a website, a movie, a musician, a hotel, a university, a governmentorganization, a restaurant, a company, an landmark, a bar, a location orany other thing that can be represented by an object in the socialnetworking system 130.

In one embodiment, multiple node type tags are included in the web page122 or a node type tag includes multiple values, so that the socialnetworking system 130 generates different types of nodes associated withthe web page 122. For example, a web page 122 identifying a marathon mayinclude node type tags identifying an event, a non-person entity and alocation. This causes the social networking system 130 to generate threedifferent nodes, a first node having an event type, a second node havinga non-person entity type and a third node having a location type, eachassociated with the web page 122; the social networking system 130enables users to perform different actions on each node, depending onthe type of the node, as further described below. Alternatively, thesocial networking system 130 generates a single node having propertiesof different types of node. In the previous example, rather thangenerate a node having an event type, a node having a non-person entitytype and a node having a location type, a single node is generatedhaving the properties of a node having an event type, a node having anon-person entity type and a node having a location type is generated.

The web page 122 also includes a frame 320 that calls a Uniform ResourceLocator (URL) within a domain associated with the social networkingsystem 130. The frame 320 is rendered by a browser application 112operating on a user device 110 executing a widget 124 included in themarkup language document 116 encoding the web page 122. The widget 124comprising one or more instructions that, when executed by a browserapplication 112, generate the frame 320 the frame within the web page122 and include information from the social networking system in theframe 320. In one embodiment, the frame 320 is an iframe including dataobtained from the social networking system 130.

The frame 320 includes data from the social networking system 130associated with a node maintained by the social networking system 130and associated with a URL, or other web identifier, specified by thewidget 124. For example, when a browser application 112 executes thewidget 124, a request for content including a URL or other webidentifier is communicated from the browser application 112 to thesocial networking system 130. The social networking system 130identifies a node associated with the URL or other web identifier fromthe request for content and communicates information about theidentified node to browser application 112, which displays theinformation in the frame 320. In one embodiment, the widget 124communicates one or more parameters to the social networking system 130.The parameters allow the web page 124 to customize the frame 320. Forexample, the parameters specify the height and/or width of the frame320.

In one embodiment, the frame 320 includes one or more action buttons330, and may also include social information 340 from the socialnetworking system 130, allowing a user to take a specific action withrespect to the node associated with the content shown in the frame 320.The one or more action buttons 330 allow a user to take a specificaction with respect to the node associated with the content shown in theframe 320. The specific action may depend upon the type of nodeassociated with the content in the frame 320. For example, if the nodehas an event type, an action button 330 allows a user to indicateattendance to the event. If the node has an entity type, an actionbutton 330 allows a user to indicate an interest in the entity. If thenode has a location type, an action button 330 allows a user to check-inor otherwise indicate the user's presence at the location. Thus, anaction button 330 allows a social networking system 130 user to performone or more interactions with a node in the social networking system 130presented by the frame 320.

The frame 320 may also include social information 340 obtained from thesocial networking system 130, allowing the content of the frame 320 tobe personalized for an identified user of the social networking system130. For example, the social information 330 may identify the number offriends of an identified user of the social networking system 130 whohave taken an action associated with an action button 330 or mayidentify one or more specific friends of the identified user of thesocial networking system 130 who have taken an action associated withthe action button 330. As an example, if the action button 330 allows auser to indicate an interest in an entity type node, the socialinformation 340 may identify a number of friends of the user who havealso indicated an interest in the entity type node. Further, if theaction button 330 allows a user to indicate that the user will beattending an event associated with an event type node, the socialinformation 340 may identify specific fiends of the user who have alsoindicated they will be attending the event. The social information 340may be personalized to friends of an identified user or may beinformation obtained from all users if a user of the social networkingsystem 130 is unable to be identified.

FIG. 4 is a web page 400 of one embodiment of an external website 120including multiple frames 410A, 410B, 410C for interacting with multiplenodes associated with the web page 400 outside of the social networkingsystem. In one embodiment, the web page 400 includes content identifyingmultiple items, with each item associated with a node in the socialgraph of the social networking website 130. A frame 410A, 410B, 401C isdisplayed next to each item and including content from the socialnetworking system 130 associated with the item.

For example, the web page 400 is maintained by an online retailer anddisplays links identifying multiple items for purchase from the onlineretailer. Each item for purchase is associated with a node in the socialgraph of the social networking system 130 and the web page 400 includesmultiple widgets 124, each associated with an identified item forpurchase. A widget associated with a first item communicates a firstrequest for content including a URL or other web identifier of a webpage associated with the first item to the social networking system 130.The request thus identifies a node associated with the URL or other webidentifier of the web page associated with the first item andcommunicates information about the first node to browser application112, which displays the information in the first frame 410A. Similarly,a second and third widget 124 communicate second and third requests forcontent, respectively, to the social networking system 124 identifyingURLs of web pages associated with the second item and the third item,respectively. Content received from the social networking system 130 fora node associated with the second item and a node associated with thethird item is then displayed in the second frame 410B and the thirdframe 410C, respectively. For example, the widget 124 associated with anitem communicates a URL identifying product page within the onlineretailer to the social networking system 130.

The frames 410A, 410B, 410C may include one or more action buttons,allowing a user to interact with a node on the graph associated with theitem displayed by the web page 400. For example, an online retailer maypresent frames 410A, 410B, 410C identifying different items forpurchase, and an action button 420A, 420B, 420C in a frame 410A, 410B,410C allows a user to comment on an item for purchase or to express aninterest in an item.

As another example, the web page 400 is maintained by a movie review ora movie rental site that lists multiple movies and maintains a separateweb page for each movie. The web page 400 may include links foraccessing web pages associated with different movies with a frame 410A,410B, 410C associated with each movie. The frames 410A, 410B, 410C aregenerated by different widgets 124 communicating URLs or web identifiersof different web pages associated with different movies to the socialnetworking system 130. The frames 410A, 410B, 410C may each include morethan one action button 420A, 420B, 420C, allowing a user to interactwith a node in the social networking system 130 associated with a webpage associated with a movie. For example, each frame 410A, 410B, 410Cmay include an action button 420A, 420B, 420C allowing a user toindicate an interest in the movie associated with a node in the socialnetworking system 130.

In an additional example, the web page 400 is maintained by a restaurantreservation website and displays multiple open reservations. A frame410A, 410B, 410C is proximate to each displayed reservation and includescontent from the social networking system 130 associated with nodes inthe social graph associated with web pages corresponding to the openreservations. An action button 420A, 420B, 420C allows a user tointeract with the node associated with an open reservation. However, asdiscussed above in conjunction with FIG. 3, the action performed by anaction button 420A, 420B, 420C depends on a node type. For example, if afirst reservation is associated with a location node, interaction with afirst action button 420A allows a user to check-in to indicate arrivalat a location associated with the first reservation. If a secondreservation is associated with an event node, interaction with a secondaction button 420B allows a user to indicate attending the event.

Interaction with a Node Associated with a Web Page Outside of a SocialNetworking System

Initially, the social networking system 130 generates a node associatedwith a web page 122 outside of the social networking system 130. Afterthe node is generated, the web page 122 is included in the social graphmaintained by the social networking system 130, effectively opening thesocial graph to third-party developers and encouraging furtherdevelopment and definition of a complex and rich social graph.

An operator of an external website 120 creates a markup languagedocument 116 encoding a web page 122 that includes the widget 124described above in conjunction with FIG. 1. The markup language document116 may also include one or more tags as described above in conjunctionwith FIG. 3. The social networking system 130 requests and receives themarkup language document 116 encoding the web page and extracts andrecords information from tags in the markup language document 116. Theinformation extracted from the tags is used by the social networkingsystem 130 to create a new node and the information extracted from thetags is stored in the social networking system 130. For example, thesocial networking system 130 generates a node having a type identifiedby a node type tag and store data extracted from a title tag, a keywordstag, a description tag and an administrator tag included in the markuplanguage document. If the markup language document 116 does not includeany tags, the social networking system 130 may generate a predeterminedtype of node and parse the markup language document 116 to identify datafor storage in the generated node.

The social networking system 130 may request the markup languagedocument 116 encoding the web page 122 in response to various types ofevents. For example, an operator of the web page 122 or of an externalweb site 120 including the web page 122 communicates a request to thesocial networking system 130 to generate a node associated with the webpage 122. For example, a user interface in the social networking system130 may receive a request to generate a node associated with a web page.Alternatively, the social networking system 130 requests the markuplanguage document 116 encoding the web page 122 when the web page 122 isinitially loaded by a browser 112 and the social networking system 130receives a request for content when the browser 112 executes the widget124 included in the web page 122. As another example, in response toreceiving an initial interaction with an action button within the framegenerated by the widget 124, the social networking system 130 requeststhe markup language document 116 encoding the web page 122 if the socialnetworking system 130 determines that a node associated with the webpage 122 does not currently exist.

Once the social networking system 130 stores a node associated with aweb page 122, a user of the social networking system 130 may interactwith the node by interacting with the web page 122. FIG. 5 is aninteraction diagram of a process for interacting with a node outside ofa social networking system 130, in accordance with an embodiment of theinvention. In the embodiment shown by FIG. 5, the external website 120is separate from the social networking system 130. Initially, a userdevice 110 requests 510 a web page 122 from the external website 120.For example, a user of the user device 110 enters a uniform resourcelocator (URL) or other identifier associated with the web page 122 intoa browser application 112 operating on the user device 110. The browserapplication 112 identifies the external website 120 associated with thereceived URL or other identifier and requests 510 a web page 122associated with the received URL or other identifier from the identifiedexternal website 120.

After receiving the request for the web page 122, the external website120 generates the requested web page 122 using locally-stored data. Forexample, the external website 120 generates 515 a markup languagedocument 116 describing the content and formatting of the web page 122based on stored data. The external website 120 includes a widget 124comprising instructions that, when executed by a browser application 112of a user device 110, retrieve data from the social networking system130 and display the information retrieved from the social networkingsystem 130. For example, the widget 124 comprises an instructionassociated with the social networking system 130 that generates a framewithin the web page 122 that includes information from the socialnetworking system 130. Hence, the widget 124 allows a web page 122 fromthe external website 120 to provide personalized content from the socialnetworking website 130 when the web page 122 is rendered and displayedby a browser application 112 of a user device 110. The widget 124 alsoallows a user to interact with content from the social networkingwebsite 130 by interacting with content in the frame generated withinthe web page 122. The widget 124 includes a uniform resource locator(URL), or other web page identifier, associated with the web page 122from the external website 120, and may also include one or moreparameters describing presentation of the frame, or iframe, by thebrowser 112 of the user device 110. In one embodiment, the URL includedin the widget 124 is the same as the URL of the requested web page 122.Alternatively, the URL included in the widget 124 is a URL associatedwith a web page other than the requested web page 122.

The external website 120 then sends 520 the markup language document 116describing the generated web page 122 and including the widget 124 tothe user device 110 through the network 140. After receiving the markuplanguage document 116, the browser 112 renders 525 the web page 122based on the content and formatting instructions included in the markuplanguage document 116. In addition to rendering 525 the web page 122,the browser 112 in the user device 110 executes the widget 124 to create530 a frame in the web page 122. Execution of the widget 124 also causesthe browser 112 to request 540 content from the social networking system130 for inclusion in the frame via the network 140. The URL, or otherweb identifier, included in the widget 124 is communicated to the socialnetworking system 130 to request 540 content from a node associated withthe URL included in the widget 124. In one embodiment, the browser 112also identifies one or more parameters from the widget 124 and transmitsthe identified parameters to the social networking system 130 whenrequesting 540 content for inclusion in the frame to allow furthercustomization of the requested content.

Responsive to receiving the request for content from the browser 112,the social networking system 130 checks 545 the user device 110 for acookie 114. In response to the social networking system 130 checking 545for the cookie 114, the user device 110 sends 550 the cookie 114, or amessage associated with the cookie 114, to the social networking system130. In one embodiment, the existence of cookie 114 indicates whetherthe user of the computing device 110 is a user of the social networkingsystem 130 (e.g., whether the user has a valid account with the socialnetworking system 130). If the user of the computing device 110 is auser of the social networking system 130, the cookie 114 may containinformation indicating whether the user is logged into the socialnetworking system 130 (e.g., whether the user has a current validsession with the social networking system 130). Checking 545 the userdevice 110 for a cookie 114 thus allows the social networking system 130to authenticate the user session. In other embodiments, the socialnetworking system 130 may just determine whether the user is a user ofthe social networking system 130, e.g., by checking 545 for an existenceof a cookie, without determining whether the user is logged into thesocial networking system 130. Although cookies are described herein forauthenticating the user and/or the user session, any other methods ofuser or session identification or authentication may be used (such asrecognizing a physical token).

If the user associated with the received cookie 114 has beenauthenticated, the social networking system 130 generates 555 contentfor inclusion in the frame that is personalized according to the userassociated with the received cookie 114. For example, the socialnetworking system 130 generates 555 social information describingactions a node associated with the URL included in the widget 124 andassociated with friends of the identified user. For example, thegenerated social information identifies a number of friends of theidentified user taking a specific type of action regarding the node oridentifies specific friends of a user recently taking a specified typeof action regarding the node. Alternatively, the social networkingsystem 130 generates 555 content by extracting data from the nodeassociated with the URL included in the widget 124 without adding socialinformation associated with the identified user. For example, the socialnetworking system 130 determines a title, a description and an imagefrom the node. Additionally, the social networking system 130 generatesone or more action buttons for inclusion in the frame. The one or moreaction buttons are dependent on the node type, as described above inconjunction with FIGS. 3 and 4, and allow a user to interact with thenode associated with the URL included in the widget 124 by interactingwith the one or more action buttons.

If the social networking system 130 determines that the user associatedwith the received cookie 114 matches an administrator user identifierstored in the node associated with the URL included in the widget 124,the social networking system 130 generates 550 administration contentfor presentation by the frame. An administrator tag included in themarkup language document 114 encoding a web page 122 specifies users ofthe social networking system 130 with the ability to create and/ormaintain nodes associated with the web page 122. Hence, when the socialnetworking system 130 identifies a user associated with an administratoruser identifier, the social networking system 130 generates 555 contentallowing the user to modify the node associated with the URL included inthe widget 124. For example, the social networking system 130 generates555 a link that directs the user to a debug page when accessed by theuser via the frame. Alternatively, the social networking system 130generates 555 debugging information from the node associated with theURL included in the widget 124 for display using the frame. For examplethe social networking system 130 identifies tags missing from the markuplanguage document 116 encoding the web page 122 and allows the user toenter the missing tags or to modify existing tags.

However, if the social networking system 130 is unable to authenticatethe user associated with the received cookie 114, the social networkingsystem 130 communicates a prompt for the user to enter authenticationinformation to the user device 110. Alternatively, the social networkingsystem 130 generates 555 content by extracting data from the nodeassociated with the URL included in the widget 124 without adding socialinformation. In another embodiment, the social networking system 130generates 555 content by extracting data from the node associated withthe URL included in the widget 124 and determining actions taken by anyuser of the social networking system 130 regarding the identified node.For example, the social networking system 130 may identify the mostrecent actions regarding the identified node taken by any user of thesocial networking system 130. Thus, until the social networking system130 receives authentication information associated with the userassociated with the received cookie 114, the content generated 555 bythe social networking system 130 does not include social informationdescribing actions performed by friends of the user associated with thereceived cookie 114 regarding the identified node. After receiving andverifying authentication information associated with the user associatedwith the cookie 114, the social networking system 130 may generate 555social information for inclusion in the frame that is personalized forthe user associated with the cookie 116, as described above.

Similarly, if the user device 110 does not send 550 a cookie 114 to thesocial networking system 130, generates 555 content for inclusion in theframe by extracting information from the URL included in the widget 124.In one embodiment, the generated content may also include one or moreactions taken by any user of the social networking system 130 andassociated with the node associated with URL included in the widget 124.In one embodiment, the social networking system 130 also includes aprompt for joining the social networking system 130 in the frame.

The social networking system 130 then sends 560 the frame content to theuser device 110 through the network 140. The browser application 112included on the user device 110 then renders 565 using the frame usingthe content received from the social networking system 130 and displays570 the web page 122 and the frame, with the content from the socialnetworking system 130 displayed in the frame. The frame includes one ormore action buttons generated by the social networking system 130.

When an action is selected 575 by a user of the user device 110interacting with an action button, the selected action is transmitted tothe social networking system 130 via the network 140. Selecting 575 anaction by interacting with an action button allows users to interactwith the node associated with the URL identified by the widget 124 as ifthe user were communicating within the node from within the socialnetworking system 130. The external website 120 need not know that theaction was taken, or even the identity of the user. The socialnetworking system 130 then records 580 the action between the user andthe node associated with the URL identified by the widget 124, allowingthe social networking system 130 to react as if the user wereinteracting with the node from within the social networking system 130.Thus, by interacting with the node associated with the URL identified bythe widget 124 using an action button 330 in the frame 320, the actiontaken by the user is equivalent to any other user interaction with thenode from within the social networking system 130. As with any userinteraction with another node in the social networking system 130, thisinteraction may create an edge between the user and the node that theuser interacted with. The stored edge provides useful contextualinformation about the connection between that node and the user (wherethe user is also represented by a node).

In one embodiment, the action button or other user interact enabling theuser to interact with the node may be on a portion of the web page thatis within the third-party web page's domain, rather than within theframe. In such an embodiment, the third-party web site 120 may need tocommunicate this action to the social networking system 130 so that theaction can be recorded. In such an embodiment, the social networkingsystem 130 may provide one or more APIs, which the third-party website120 may use to send communications such as these to the socialnetworking system 130. Alternatively, any other appropriate mechanismsfor communicating this information from the third-party website 120 tothe social networking system 130 may be used.

In addition to recording 580 the action between the user and the node,the social networking system 130 may take additional actions dependenton the type of action. For example, if the action selected 575 in theframe is the user expressing an interest in the node, the action isrecorded 580 by the social networking system 130 and may be published toa feed associated with the user and the user's profile may be updated toinclude the affiliation between the user and the node. As anotherexample, if the action selected 575 in the frame is the user indicatingthat the user is at a location, the action may be published to a feeddescribing actions taken by the user and communicated to friends of theuser. Further, if the action selected 575 in the frame is the userindicating attendance to an event, the action is recorded 580, and mayalso be added to a user's calendar and published to a feed describingactions taken by the user.

Additionally, after recording 580 the selected action, the socialnetworking system 130 may allow an entity associated with the nodeassociated with the URL identified by the widget 124 to publishcommunications back to users who have performed an action relative tothe node associated with the URL identified by the widget 124. Forexample, if a user indicates an interest in the node associated with theURL identified by the widget 124, an administrator of the URL identifiedby the widget may publish communications back to the user via the socialnetworking system 130. Further, the social networking system maycommunicate a message to the user via the frame to confirm that theselected action was taken by the social networking system 130 orcommunicate a message to the user via the frame to authorize the socialnetworking system 130 to notify friends of the user that the action wastaken.

Accordingly, the social graph maintained by the social networking system130 may include anything that can be represented by a web page. Inaddition to increasing the amount of data stored by the social graph,this allows users of the social networking system 130 to easily interactwith nodes in the social graph while outside of a domain associated withthe social networking system 130. For example, a user may interact witha node of the social graph associated with a web page 122 from anexternal website 120 while viewing the web page 122 retrieved from theexternal website 120. Interactions between users and nodes representingweb pages may be propagated back to the social networking system 130,which may then use socially relevant data from the interaction forvarious purposes (e.g., posting activity feeds, targeting advertising,etc.).

SUMMARY

The foregoing description of the embodiments of the invention has beenpresented for the purpose of illustration; it is not intended to beexhaustive or to limit the invention to the precise forms disclosed.Persons skilled in the relevant art can appreciate that manymodifications and variations are possible in light of the abovedisclosure.

Some portions of this description describe the embodiments of theinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs or equivalent electrical circuits,microcode, or the like. Furthermore, it has also proven convenient attimes, to refer to these arrangements of operations as modules, withoutloss of generality. The described operations and their associatedmodules may be embodied in software, firmware, hardware, or anycombinations thereof.

Any of the steps, operations, or processes described herein may beperformed or implemented with one or more hardware or software modules,alone or in combination with other devices. In one embodiment, asoftware module is implemented with a computer program productcomprising a computer-readable medium containing computer program code,which can be executed by a computer processor for performing any or allof the steps, operations, or processes described.

Embodiments of the invention may also relate to an apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the required purposes, and/or it may comprise ageneral-purpose computing device selectively activated or reconfiguredby a computer program stored in the computer. Such a computer programmay be stored in a non-transitory, tangible computer readable storagemedium, or any type of media suitable for storing electronicinstructions, which may be coupled to a computer system bus.Furthermore, any computing systems referred to in the specification mayinclude a single processor or may be architectures employing multipleprocessor designs for increased computing capability.

Embodiments of the invention may also relate to a product that isproduced by a computing process described herein. Such a product maycomprise information resulting from a computing process, where theinformation is stored on a non-transitory, tangible computer readablestorage medium and may include any embodiment of a computer programproduct or other data combination described herein.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the invention be limited notby this detailed description, but rather by any claims that issue on anapplication based hereon. Accordingly, the disclosure of the embodimentsof the invention is intended to be illustrative, but not limiting, ofthe scope of the invention, which is set forth in the following claims.

What is claimed is:
 1. A method comprising: accessing information fromone or more tags in a web page by a social networking system, the webpage being associated with a domain that is different from a domainassociated with the social networking system; creating a node in thesocial networking system, the created node defined at least in partbased on the accessed information; receiving information describing anaction related to the node performed by a user of the social networkingsystem; and storing the information describing the user's action relatedto the node by the social networking system.
 2. The method of claim 1,further comprising: maintaining the node in the social networking systemand connections between the node and one or more additional nodesmaintained by the social networking system; and communicating the user'saction related to the node in a stream directed to one or more otherusers of the social networking system with whom the user has establisheda connection.
 3. The method of claim 1, further comprising: updating anaffinity between a user and a node for the user who performed the actionrelated to the node; and updating a profile of the user who performedthe action related to the node, the updated profiled indicating that theuser has performed the action.
 4. The method of claim 1, wherein thenode in the social networking system represents a page of content in thesocial networking system.
 5. The method of claim 4, wherein the actioncomprises the user's expressing an interest in the page, and whereinresponse to the user's expressing an interest in the page associatedwith the node, updating a profile of the user with the expressedinterest.
 6. The method of claim 1, wherein the node in the socialnetworking system represents an event, and wherein the action comprisesthe user's confirming attendance at the event.
 7. The method of claim 1,wherein the node in the social networking system represents a location,and wherein the action comprises the user's confirming the user'spresence at the location.
 8. The method of claim 1, wherein accessingthe information from the web page comprises: obtaining a markup languagedocument for the web page; and identifying one or more tags in themarkup language document, the tags containing the accessed information.9. The method of claim 1, wherein the accessed information comprises adefinition of a type of the node, and wherein the method furthercomprises limiting the one or more actions that a user can performrelated to the node based on the type of the node.
 10. The method ofclaim 1, wherein the accessed information comprises a textualdescription associated with the node, and wherein the method furthercomprises displaying the textual description at the social networkingsystem in connection with the node.
 11. The method of claim 1, whereinthe accessed information comprises an identity of one or more users ofthe social networking system designated as an administrator of the node,and wherein the method further comprises providing an interface enablingthe one or more users designated as administrators for the node toupdate the information about the node stored by the social networkingsystem.
 12. A computer program product comprising a non-transitorycomputer readable storage medium having instructions encoded thereonthat, when executed by a processor, cause the processor to: accessinformation from one or more tags in a web page by a social networkingsystem, the web page being associated with a domain that is differentfrom a domain associated with the social networking system; create anode in the social networking system, the created node defined at leastin part based on the accessed information; receive informationdescribing an action related to the node performed by a user of thesocial networking system; and store information describing the user'saction related to the node by the social networking system.
 13. Thenon-transitory computer readable storage medium of claim 12, furthercomprising instructions that when executed by the processor cause theprocessor to: maintain the node in the social networking system andconnections between the node and one or more additional nodes maintainedby the social networking system; and communicate the user's actionrelated to the node in a stream directed to one or more other users ofthe social networking system with whom the user has established aconnection.
 14. The non-transitory computer readable storage medium ofclaim 12, further comprising instructions that when executed by theprocessor cause the processor to: update an affinity between a user anda node for the user who performed the action related to the node; andupdate a profile of the user who performed the action related to thenode, the updated profiled indicating that the user has performed theaction.
 15. The non-transitory computer readable storage medium of claim12, wherein the node in the social networking system represents a pageof content in the social networking system, and wherein the actioncomprises the user's expressing an interest in the page.
 16. Thenon-transitory computer readable storage medium of claim 12, wherein thenode in the social networking system represents an event, and whereinthe action comprises the user's confirming attendance at the event. 17.The non-transitory computer readable storage medium of claim 12, whereinthe node in the social networking system represents a location, andwherein the action comprises the user's confirming the user's presenceat the location.
 18. The non-transitory computer readable storage mediumof claim 12, wherein the accessed information comprises a definition ofa type of the node, and wherein the method further comprises limitingthe one or more actions that a user can perform related to the nodebased on the type of the node.
 19. The non-transitory computer readablestorage medium of claim 12, wherein the accessed information comprises atextual description associated with the node, and wherein the methodfurther comprises displaying the textual description at the socialnetworking system in connection with the node.
 20. The non-transitorycomputer readable storage medium of claim 12, wherein the accessedinformation comprises an identity of one or more users of the socialnetworking system designated as an administrator of the node, andwherein the method further comprises providing an interface enabling theone or more users designated as administrators for the node to updatethe information about the node stored by the social networking system.21. A method comprising: receiving at a server of a social networkingsystem from a user device a request for information in response for aweb page of a third-party website that is within a domain of thethird-party website that is different from a domain of the socialnetworking system; providing a markup language document to the userdevice, wherein the markup language document includes an instruction tocreate a frame within the web page that includes information obtainedfrom the social networking system; determining that a node associatedwith the web page of the third-party website does not exist in thesocial networking system; accessing information from one or more tags inthe web page by the social networking system; responsive to adetermination that the node associated with the web page of thethird-party website does not exist in the social networking system,creating a new node in the social networking system, the created nodedefined at least in part based on the accessed information; sending therequested information for display in the frame of the web page; andstoring at the server of the social networking system interaction withthe new node by a user of the social networking system.
 22. The methodof claim 21, wherein the new node is associated with the web page. 23.The method of claim 21, wherein the frame comprises an iframe thatcontains a web page in the domain of the social networking system. 24.The method of claim 23, wherein the iframe includes an action button forperforming an action related to the node directly within the domain ofthe social networking system.
 25. The method of claim 21, furthercomprising: sending for display on the user device information about oneor more other users who have interacted with the new node and with whomthe user has established a connection within the social networkingsystem.